/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ucab.desarrollo.viajesbook.actions;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import java.util.Date;
import java.util.Map;
import ucab.desarrollo.viajesbook.AppContext;
import ucab.desarrollo.viajesbook.beans.Usuario;
import ucab.desarrollo.viajesbook.negocio.UsuarioBO;

/**
 *
 * @author isak
 */
public class UsuarioModificarAction  extends  ActionSupport {

    private static final long serialVersionUID = 2228056990625416790L;

    private static final String USUARIO_CREADO= "Usuario Creado Exitosamente";

    private static final String ERROR_INTERNO = "Error interno. Por favor, inténtelo otra vez en unos minutos.";


    private String nombre;

    private String apellido;

    private String correo;

    private String clave;

    private Date fechanac;

    private char genero;

    private String mensaje;

    public UsuarioModificarAction() {

    }


    /**
     * Metodo que muestra los datos del usuario en la pagina
     * @return
     */
    @Override
    public String execute()
    {
        String destino = INPUT;

        try
        {

        Map session = ActionContext.getContext().getSession();
        Usuario usuario = (Usuario)session.get("usuario");    
        setNombre(usuario.getUsuarionombre());
        setApellido(usuario.getUsuarioappellido());
        setCorreo(usuario.getUsuariocorreoelectronico());
        setClave(usuario.getUsuariologin());
        setFechanac(usuario.getUsuariofechanac());
        setGenero(usuario.getUsuariosexo());
        destino = SUCCESS;   

        } catch (Exception e) {

            setMensaje("Ha habido una excepcion en el Sistema: " + e.getMessage());

        }
        finally
        {
            return destino;
        }

    }

    
    /**
     * devuelve el nombre
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * asigna el valor a nombre
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * actualizar el usuario modificado en la bd
     * @return
     */
    public String  llamada() {
         String destino = INPUT;
         Map session = ActionContext.getContext().getSession();
         Usuario usuario = (Usuario)session.get("usuario");
         usuario.setUsuarionombre(nombre);
         usuario.setUsuarioappellido(apellido);
         usuario.setUsuariocorreoelectronico(correo);
         usuario.setUsuariologin(clave);
         usuario.setUsuariofechanac(fechanac);
         usuario.setUsuariosexo(genero);
         UsuarioBO negocio = (UsuarioBO)AppContext.getApplicationContext().getBean("usuarioBO");         

         try
         {
            setMensaje(negocio.actualizar(usuario));
            destino =  SUCCESS;
         } catch (Exception e) 
         {
             destino = ERROR_INTERNO;
             setMensaje("Ha habido una excepcion en el Sistema: " + e.getMessage());
         }
         finally
         {
            return destino;
         }
      }

/**
 * Deshabilita una cuenta de usuario
 * @return
 */
      public String deshabilitar()
      {
        String destino=INPUT;
        Map session = ActionContext.getContext().getSession();
        Usuario usuario = (Usuario)session.get("usuario");        
        usuario.setUsuariocuantaactiva(0);
        UsuarioBO negocio = (UsuarioBO)AppContext.getApplicationContext().getBean("usuarioBO");
        
         try
         {
            negocio.deshabilitar(usuario);
            destino =  SUCCESS;
         }
         catch (Exception e)
         {
             destino = ERROR_INTERNO;
             setMensaje("Ha habido una error en el Sistema: " + e.getMessage());
         }
         finally
         {
            return destino;
         }
        
      }

      /**
       * Habilitar cuenta de usuario
       * @return String 
       */
      public String habilitar()
      {
        String destino=INPUT;        
        Usuario usuario = (Usuario)AppContext.getApplicationContext().getBean("usuario");
        usuario.setUsuariocorreoelectronico(correo);
        usuario.setUsuariologin(clave);
        usuario.setUsuariocuantaactiva(1);
        UsuarioBO negocio = (UsuarioBO)AppContext.getApplicationContext().getBean("usuarioBO");

         try
         {
            negocio.habilitar(usuario);
            setMensaje("Usuario habilitado");
            setCorreo("");
            destino =  SUCCESS;
         }
         catch (Exception e)
         {
             destino = ERROR_INTERNO;
             setMensaje("Ha habido una error en el Sistema: " + e.getMessage());
         }
         finally
         {
            return destino;
         }
        
      }

      /**
     * @return the apellido
     */
    public String getApellido() {
        return apellido;
    }

    /**
     * @param apellido the apellido to set
     */
    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    /**
     * @return the correo
     */
    public String getCorreo() {
        return correo;
    }

    /**
     * @param correo the correo to set
     */
    public void setCorreo(String correo) {
        this.correo = correo;
    }

    /**
     * @return the clave
     */
    public String getClave() {
        return clave;
    }

    /**
     * @param clave the clave to set
     */
    public void setClave(String clave) {
        this.clave = clave;
    }

    /**
     * @return the fechanac
     */
    public Date getFechanac() {
        return fechanac;
    }

    /**
     * @param fechanac the fechanac to set
     */
    public void setFechanac(Date fechanac) {
        this.fechanac = fechanac;
    }

    /**
     * @return the genero
     */
    public char getGenero() {
        return genero;
    }

    /**
     * @param genero the genero to set
     */
    public void setGenero(char genero) {
        this.genero = genero;
    }

    /**
     * @return the mensaje
     */
    public String getMensaje() {
        return mensaje;
    }

    /**
     * @param mensaje the mensaje to set
     */
    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }




}
